package com.price

import android.content.Intent
import androidx.multidex.MultiDexApplication
import com.price.common.extend.OnCrashHandlerListener
import com.price.common.extend.OnCustomCrashListener
import com.price.common.extend.appLightMode
import com.price.common.extend.cacheDirPath
import com.price.common.extend.context
import com.price.common.extend.crashHandlerLister
import com.price.common.extend.doCustomCrashListener
import com.price.common.extend.initLogger
import com.price.common.extend.saveCrashLogLocally
import com.price.keeplive.config.ForegroundNotification
import com.price.sample.ui.MainActivity
import com.zp.common.R
import kotlin.system.exitProcess

class App : MultiDexApplication() {

    override fun onCreate() {
        super.onCreate()

//        CrashReport.initCrashReport(
//            context,
//            "32e3ec0b51",
//            BuildConfig.DEBUG
//        )
        initLogger()

        saveCrashLogLocally(cacheDirPath)
        //未捕获异常，会崩
        crashHandlerLister(object : OnCrashHandlerListener{
            override fun onCrashHandler(thread: Thread, ex: Throwable): Boolean {
                ex.printStackTrace()
//                restartApp()
                return true
            }
        })
        //已捕获异常
        doCustomCrashListener =object : OnCustomCrashListener {
            override fun onCrash(e: Throwable) {
                e.printStackTrace()
            }
        }
        appLightMode=true

//    fileProviderAuthority = "$packageName.provider"

        // 定义前台通知的默认样式
        val foregroundNotification =
            ForegroundNotification(
                "标题", "描述:保活", R.drawable.ic_launcher_foreground
            ) { context, intent ->
                // 定义前台服务的通知点击事件

            }

        //启动保活服务
//        KeepLive.startWork(this,
//            KeepLive.RunMode.ROGUE,
//            foregroundNotification,  //你需要保活的服务，如socket连接、定时任务等，建议不用匿名内部类的方式在这里写
//            object : KeepLiveService {
//                /**
//                 * 运行中
//                 * 由于服务可能会多次自动启动，该方法可能重复调用
//                 */
//                override fun onWorking() {
//                    //  do something
//                    logError("========onWorking=========")
//
//                }
//
//                /**
//                 * 服务终止
//                 * 由于服务可能会被多次终止，该方法可能重复调用，需同onWorking配套使用，如注册和注销broadcast
//                 */
//                override fun onStop() {
//                    //   do something
//                    logError("========onStop=========")
//                }
//            }
//        )
    }



    private fun restartApp() {
        ///重新启动程序，注释上面的退出程序
        val intent = Intent()
        intent.setClass(context, MainActivity::class.java)
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        context.startActivity(intent);
        android.os.Process.killProcess(android.os.Process.myPid());
        exitProcess(0)
    }
}